﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WAPA.Framework;
using System.Collections.ObjectModel;
using Microsoft.WindowsAzure.StorageClient;

using Microsoft.Samples.WindowsAzure.ServiceManagement;

namespace WAPA.Client
{
    public class WAPAClientViewModel
    {
        private string _subscriptionId;

        public string SubscriptionId
        {
            get { return _subscriptionId; }
            set { _subscriptionId = value; }
        }
        private string _certificateThumbprint;

        public string CertificateThumbprint
        {
            get { return _certificateThumbprint; }
            set { _certificateThumbprint = value; }
        }
        private string _storageAccountName;

        public string StorageAccountName
        {
            get { return _storageAccountName; }
            set { _storageAccountName = value; }
        }
        private string _accessKey;

        public string AccessKey
        {
            get { return _accessKey; }
            set { _accessKey = value; }
        }
        private string _workerConfig;

        public string WorkerConfigFile
        {
            get { return _workerConfig; }
            set { _workerConfig = value; }
        }
        private string _certificatePrivateKeyPassword;

        public string CertificatePrivateKeyPassword
        {
            get { return _certificatePrivateKeyPassword; }
            set { _certificatePrivateKeyPassword = value; }
        }
        
        public  LocationList Locations { get; set; }
        public DeploymentList Deployments { get; set; }
        public  HostedServiceList HostedServices { get; set; }
        public  AffinityGroupList AffinityGroups { get; set; }
        public  Microsoft.Samples.WindowsAzure.ServiceManagement.OperatingSystemList OperatingSystems { get; set; }
        public  List<OperationContext> Operations { get; set; }
        public List<WorkerTaskReportMessage> Reports { get; set; }
        public List<WorkerRegistrationMessage> RegisteredInstances { get; set; }
        public List<WorkerTaskReportMessage> PendingTasks { get; set; }
        public List<CloudBlob> OutputBlobs { get; set; }

        private List<string> _vmSizes;

        public List<string> VmSizes
        {
            get
            {
                if (_vmSizes == null)
                    _vmSizes = new List<string> { "ExtraSmall", "Small", "Medium", "Large", "ExtraLarge" };

                return _vmSizes; }
        }

    }
}
